package cn.stylefeng.guns.modular.gridsystem.enums;

import cn.stylefeng.guns.core.annotion.ExpEnumType;
import cn.stylefeng.guns.core.exception.enums.abs.AbstractBaseExceptionEnum;
import cn.stylefeng.guns.core.factory.ExpEnumCodeFactory;
import cn.stylefeng.guns.modular.gridsystem.constants.BizExpEnumConstant;
import lombok.Getter;

/**
 * 网关任务下发表相关枚举
 *
 * @author zxw
 * @date 2022/10/31 14:34
 */
@Getter
@ExpEnumType(module = BizExpEnumConstant.GUNS_MAIN_MODULE_EXP_CODE, kind = BizExpEnumConstant.MATERIAL_EXCEPTION_ENUM)
public enum GatewayTaskExceptionEnum implements AbstractBaseExceptionEnum {

    /**
     * 下发任务不存在
     */
    NOT_EXISTED(1, "下发任务不存在"),

    /**
     * 只有待下发的任务才可以编辑
     */
    WAIT_ISSUED_CAN_EDIT(2, "只有待下发的任务才可以编辑"),

    /**
     * 只有待下发的任务才可以删除
     */
    WAIT_ISSUED_CAN_DELETE(3, "只有待下发的任务才可以删除"),

    /**
     * 任务状态不是待下发
     */
    TASK_STATUS_NOT_WAIT_ISSUED(4, "任务状态不是待下发"),

    /**
     * 只能撤回已下发的任务
     */
    ISSUED_TASK_CAN_ROLLBACK(5, "只能撤回已下发的任务"),

    /**
     * 任务状态不是已下发
     */
    TASK_STATUS_NOT_ALREADY_ISSUED(6, "任务状态不是已下发"),

    /**
     * 关联网关不能为空
     */
    GATEWAY_IDS_NOT_ALLOWED_EMPTY(7, "关联网关不能为空"),

    /**
     * 不能撤回自动下发的任务
     */
    CANNOT_ROLLBACK_AUTO_TASK(8, "不能撤回自动下发的任务"),

    /**
     * 不能撤回自动下发的任务
     */
    CANNOT_ROLLBACK_RESPONSE_TASK(9, "不能撤回已有设备响应的任务");


    private final Integer code;

    private final String message;

    GatewayTaskExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code);
    }

    @Override
    public String getMessage() {
        return message;
    }

}
